/* 
 * File:   RaizProblemaPolinomio.cpp
 * Author: jorgeorm
 * 
 * Created on 28 de diciembre de 2011, 04:00 PM
 */

#include "RaizProblemaPolinomio.h"
#include "RaizProblemaAhorro.h"
#include <iostream>
#include <algorithm>
using namespace std;

RaizProblemaPolinomio::RaizProblemaPolinomio() {
    this->polinomio= Polinomio();
    int opcion=-1;
    while(opcion<0){
        cout<<"Usar polinomio Por deffecto? [1]: si, [0]: No, deseo hacer el mio"<<endl;
        cin>>opcion;
        if(opcion<0 || opcion>1)cout<<"###########VALOR NO VALIDO###########"<<endl;
    }
    switch(opcion){
        case 1: 
            polinomioDefecto();
        break;
        case 0: 
            polinomio.crearPolinomio();
        break;
    }
    
    cout<<"Termino de crear Polinomio"<<endl;

    polinomio.imprimirPolinomio();cout<<" Polinomio"<<endl;
    this->poliDerivado=poliDerivado.derivadaPolinomio(polinomio);
    poliDerivado.imprimirPolinomio();cout<<" Derivado"<<endl;
    this->poliSegundDeriv=poliSegundDeriv.derivadaPolinomio(poliDerivado);
    poliSegundDeriv.imprimirPolinomio();cout<<" SegundaDerivada"<<endl;
}

void RaizProblemaPolinomio::polinomioDefecto(){
    int coeficientes [] ={ 19, -23, 1, -3, 0, 1 };
    int size=6;
    int n=0;
    for (int i = 0; i <  size; i++) {
        n  = coeficientes[i];
        polinomio.crearNodoPolinomio(n, i);
    }
}

long double RaizProblemaPolinomio::funcion(long double param){
    return polinomio.evaluarPolinomio(param);
}

long double RaizProblemaPolinomio::derivadaDosFuncion(long double param){
    return poliDerivado.evaluarPolinomio(param);
}

long double RaizProblemaPolinomio::derivadaFuncion(long double param){
    return poliSegundDeriv.evaluarPolinomio(param);
}

//RaizProblemaPolinomio::RaizProblemaPolinomio(const RaizProblemaPolinomio& orig) {
//}

RaizProblemaPolinomio::~RaizProblemaPolinomio() {
    poliDerivado.~Polinomio();
    polinomio.~Polinomio();
    poliSegundDeriv.~Polinomio();
}

//Sobre Escritura de las funciones necesarias para Newton y demás.


